package 抽象语法树节点;

import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import 作用域相关.作用域;
import 作用域相关.符号;
import 作用域相关.类型;

public abstract class 抽象语法树 {
    
    public 抽象语法树 父节点;
    
    public 作用域 作用域; // 该节点对应的作用域，在 定义监听器 中赋值
    public 符号 符号; // 符号表中定义的符号
    public 类型 求值类型; // 经过求值后返回的类型
    public 类型 类型提升;


    public Token idToken; // 对应的ID节点
    
    public Token 起始Token;
    public Token 结束Token;

    
    public int 起始Token索引;
    public int 结束Token索引;

    public 抽象语法树 记录Token范围(ParserRuleContext ctx) {
        起始Token = ctx.start;
        结束Token = ctx.stop;
        起始Token索引 = ctx.start.getTokenIndex();
        结束Token索引 = ctx.stop.getTokenIndex();
        return this;
    }

}
